Customnormalize
对输入字符串进行一系列自定义的文本标准化处理。
该算子按顺序执行以下操作:
1. 将所有大写字母转换为小写字母。
2. 去除字符串首尾的空白字符 (space, \t, \n, \v, \f, \r)。
3. 删除字符串中预定义的一组标点符号 (例如 .*()\")。
4. 标准化缩写词,例如,将 we 're 转换为 we're。
5. 展开常见的英文缩写词 (例如, n't -> `` not``, 'll -> `` will``, i'm -> i am 等)。
6. 标准化问号和感叹号,例如合并连续的符号 (!!! -> !) 并在符号和单词之间添加空格 (Hello? -> Hello ?)。
7. 去除字符串首尾预定义的另一组字符 (例如 [\\s,:;\\-&'\"]+)。
8. 再次去除字符串首尾的空白字符。
9. 如果处理后的字符串长度超过300个字符,则将其截断为300个字符。
10. 在字符串首部添加前缀 <S> ``,尾部添加后缀 `` <E>。
- 输入:
str - 输入字符串的地址。
str_len - 输入字符串的长度。
tmp_str - 用于中间计算的临时缓冲区的地址,其大小应足以容纳处理过程中的字符串。
params - 一个
long long类型的数组,其中每个元素是指向标准化操作所需的配置字符串或参数的指针。core_mask - 核掩码 (仅共享存储版本需要)。
- 输出:
result - 存储标准化后字符串的输出缓冲区的地址。
result_len - 指向一个
int变量的指针,用于存储结果字符串的长度。
- 支持平台:
FT78NEMT7004
备注
该算子不区分数据类型
共享存储版本:
-
void customnormalize_s(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params, int core_mask)
C调用示例:
1#include <stdio.h>
2#include <string.h>
3#include "customnormalize.h"
4
5int main() {
6 char *str = (char *)0xA0000000; // str in DDR
7 char *result = (char *)0xB0000000; // result in DDR
8 char *tmp_str = (char *)0xC0000000; // tmp_str in DDR
9 int str_len = 50; // 假设长度
10 int result_len = 0;
11 long long params[20]; // 假设参数已填充
12 int core_mask = 0xff;
13
14 customnormalize_s(str, str_len, result, &result_len, tmp_str, params, core_mask);
15
16 return 0;
17}
私有存储版本:
-
void customnormalize_p(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params)
C调用示例:
1#include <stdio.h>
2#include <string.h>
3#include "customnormalize.h"
4
5int main() {
6 char *str = (char *)0x10000000; // str in L2
7 char *result = (char *)0x10001000; // result in L2
8 char *tmp_str = (char *)0x10002000; // tmp_str in L2
9 int str_len = 50; // 假设长度
10 int result_len = 0;
11 long long params[20]; // 假设参数已填充
12
13 customnormalize_p(str, str_len, result, &result_len, tmp_str, params);
14
15 return 0;
16}